package cn.dwy2002.task;

import cn.dwy2002.task.service.ITaskTypeService;
import com.dwy2002.common.Result;
import com.dwy2002.pojo.dto.task.TaskTypeDTO;
import com.dwy2002.pojo.vo.task.TaskTypeSimpleVO;
import lombok.RequiredArgsConstructor;
import org.springframework.web.bind.annotation.*;

import java.util.List;

/**
 * @author 杜伟毅
 * @version 1.0
 * @since 2025/07/22
 */
@RestController
@RequestMapping("/task/type")
@RequiredArgsConstructor
public class TaskTypeController {
    private final ITaskTypeService service;

    /**
     * 创建任务类型
     *
     * @param dto 任务类型DTO
     * @return 操作结果
     * @author 杜伟毅
     * @since 2025/7/21 0021 11:07
     */
    @PostMapping
    public Result<Void> createTaskType(@RequestBody TaskTypeDTO dto) {
        return service.createTaskType(dto);
    }

    /**
     * 批量删除任务类型（逻辑删除）
     *
     * @param ids 类型ID列表
     * @return 操作结果
     * @author 杜伟毅
     * @since 2025/7/21 0021 11:07
     */
    @DeleteMapping
    public Result<Void> deleteTaskTypes(@RequestBody List<String> ids) {
        return service.deleteTaskTypes(ids);
    }

    /**
     * 更新任务类型信息
     *
     * @param dto 任务类型DTO
     * @return 操作结果
     * @author 杜伟毅
     * @since 2025/7/21 0021 11:07
     */
    @PutMapping
    public Result<Void> updateTaskType(@RequestBody TaskTypeDTO dto) {
        return service.updateTaskType(dto);
    }

    /**
     * 获取所有有效的任务类型
     *
     * @return 任务类型简单视图列表
     * @author 杜伟毅
     * @since 2025/7/21 0021 11:07
     */
    @GetMapping
    public Result<List<TaskTypeSimpleVO>> getAllActiveTypes() {
        return service.getAllActiveTypes();
    }
}
